#ifndef wm_grab_h
#define wm_grab_h
/*
 * Sylvain BERTRAND <digital.ragnarok@gmail.com>
 * code protected by GNU GPL v3
 */
void grab_startup(void);
void grab_shutdown(void);
struct t_ic *grab_input_context(void);
gboolean grab_keyboard_full(gboolean grab);
gboolean grab_pointer_full(gboolean grab, gboolean owner_events, gboolean confine, enum wm_cursor cur);
gint grab_server(gboolean grab);
#define grab_keyboard() grab_keyboard_full(TRUE)
#define ungrab_keyboard() grab_keyboard_full(FALSE)
#define grab_pointer(o,c,u) grab_pointer_full(TRUE, (o), (c), (u))
#define ungrab_pointer() grab_pointer_full(FALSE, FALSE, FALSE, WM_CURSOR_NONE)
gboolean grab_on_keyboard(void);
gboolean grab_on_pointer(void);
void grab_button_full(guint button, guint state, Window win, guint mask, gint pointer_mode, enum wm_cursor cursor);
void ungrab_button(guint button, guint state, Window win);
void grab_key(guint keycode, guint state, Window win, gint keyboard_mode);
void ungrab_all_keys(Window win);
void grab_key_passive_count(int change);
#endif
